<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Promise关键问题 - Promise then方法的返回结果特点</title>
</head>
<body>
    <script>

        /***
         * promise.then()返回的新 promise 的结果状态由什么决定?
            (1) 简单表达: 由 then()指定的回调函数执行的结果决定
            (2) 详细表达:
               2-1 如果抛出异常, 新 promise 变为 rejected, reason 为抛出的异常
               2-2 如果返回的是非 promise 的任意值, 新 promise 变为 resolved, value 为返回的值
               2-3 如果返回的是另一个新 promise, 此 promise 的结果就会成为新 promise 的结果
         */

        let p =new Promise((resovle,reject)=>{
            resovle('ok');
        });

        //执行then方法
        let result=p.then(value=>{
            
            //console.log(value);

             //1.抛出错误
             //throw '出了问题';

             //2.返回结果是一个非Promise类型的对象,返回成功,返回的结果就是你的返回值
             //return 521;
            
             //3.返回的结果是Promise对象,此 promise 的结果就会成为新 promise 的结果
             return new Promise((resolve,reject)=>{
                    resolve('success');
                    //reject('error');
             });

        },reason=>{
            console.log(reason);
        });

        console.log(result);
    </script>
</body>
</html>